<?php
header('Content-type:text/html;charset=utf-8;');

function db(){
//连接数据库
$link = @mysqli_connect(DB_HOST,DB_USER,DB_PASS);

//判断连接是否成功
if(mysqli_connect_errno()){
	return '连接数据库错误,原因:'.mysqli_connect_error();
}

//选择数据库
if(!mysqli_select_db($link,DB_NAME)){
	return '选择数据库失败';
}

//设置字符集
mysqli_set_charset($link,DB_CHARSET);

return $link;
}




/*
 *上传文件
 *@param string $fname 表单项名称
 *@param string $updir 上传文件的存储目录 默认为./uploads
 *@param int $allowsize 允许上传大小 单位字节 默认值 为1M
 *@param array $allowtype 允许上传类型 默认允许jpeg png gif
 *@return string $info 上传成功会有文件名称 如果失败是失败原因
 */

function upload($fname, $updir = './uploads', $allowsize = 1048576, $allowtype = array('image/jpeg','image/png','image/gif')){
	$file = $_FILES[$fname];
	//1.先判断错误号error
	if($file['error'] > 0){
		switch($file['error']){
			case 1:
				$info = '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
				break;
			case 2:
				$info = '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。';
				break;
			case 3:
				$info = '文件只有部分被上传。';
				break;
			case 4:
				$info = '没有文件被上传';
				break;
			case 6:
				$info = '找不到临时文件夹';
				break;
			case 7:
				$info = '文件写入失败';
				break;
		}
		return $info;
	}


	//2.文件大小是否符合 1048576  1M以内的
	
	if($file['size'] > $allowsize){
		$info = '请上传1M以内的图像';
		return $info;
	}


	//3.文件类型是否符合 
	if(!in_array($file['type'],$allowtype)){
		$info = '请上传jpg|png|gif类型的图像';
		return $info;
	}



	//4.随机生成文件名称
	if(!file_exists($updir)){
		mkdir($updir,0777,true);
	}

	do{
		$newname = time().rand(1000,9999).'.'.pathinfo($file['name'],PATHINFO_EXTENSION);
	}while(file_exists($newname));

	$path = rtrim($updir,'/').'/'.$newname;


	//move_uploaded_file
	if(is_uploaded_file($file['tmp_name'])){
		if(move_uploaded_file($file['tmp_name'],$path)){
			$info = '上传成功名称是：'.$newname;
		}else{
			$info = '上传失败原因：移动失败';
		}
	}else{
		$info = '不是通过http post方式上传的文件';
	}
	return $info;
	
}







/*
 *功能：缩放图像
 *@param string $srcpath 要缩放的图片的路径
 *@param int $suow 宽
 *@param int $suoh 高
 *@param string $path 缩放后图片的存储目录
 *@return string $name 缩放后的图片名称
 */
function suofang($srcpath, $suow = 100, $suoh = 100, $path = './suofang/'){
	//等比例缩放 功能
	$srcinfo = getimagesize($srcpath);

	//进行等比计算   比例使用大的
	if($suow/$srcinfo[0] > $suoh/$srcinfo[1]){
		$bili = $suow/$srcinfo[0];
	}else{
		$bili = $suoh/$srcinfo[1];
	}

	$width = floor($srcinfo[0] * $bili);
	$height = floor($srcinfo[1] * $bili);


	//创建空白画布
	$dstres = imagecreatetruecolor($width,$height);

	//资源  imagecreatefrom...
	switch($srcinfo[2]){
		case 1:
			$srcres = imagecreatefromgif($srcpath);
			$func = 'imagegif';
			$ext = '.gif';
			break;
		case 2:
			$srcres = imagecreatefromjpeg($srcpath);
			$func = 'imagejpeg';
			$ext = '.jpeg';
			break;
		case 3:
			$srcres = imagecreatefrompng($srcpath);
			$func = 'imagepng';
			$ext = '.png';
			break;
	}
	//imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
	imagecopyresampled($dstres,$srcres,0,0,0,0,$width,$height,$srcinfo[0],$srcinfo[1]);

	//生成一个随机的文件名
	$name = time().mt_rand(100,999).$ext;
	$newpath = $path.$name;
	
	$func($dstres,$newpath);

	imagedestroy($dstres);
	imagedestroy($srcres);
	return $name;
}





/**
 *验证码
 *@param int $type 验证码类型 1字母+数字混合 2字母 3数字
 *@param int $len 验证码长度
 *@param int $width 验证码宽度
 *@param int $height 验证码高度
 *@return string $str 随机生成的验证码字符
 */

function yzm($type = 1,$len = 4,$width = 150,$height = 60){
//创建画布
$img = imagecreatetruecolor($width,$height);
//准备颜色
$dark = imagecolorallocate($img,rand(0,60),rand(10,70),rand(20,80));
$tint = imagecolorallocate($img,rand(170,230),rand(180,245),rand(190,255));
//画图
//画一个矩形
imagefilledrectangle($img,0,0,$width,$height,$tint);
//画字符
switch($type){
	case 1:
	$str = implode(array_rand(array_flip(array_merge(range('a','z'),range('A','Z'),range(0,9))),$len));
	break;
	case 2:
	$str = implode(array_rand(array_flip(array_merge(range('a','z'),range('A','Z'))),$len));
	break;
	case 3:
	$str = implode(array_rand(array_flip(array_merge(range(0,9))),$len));
	break;
}
for($i = 0;$i < $len;$i++){
	imagettftext($img,25,rand(-30,30),rand($i*$width/$len,($i+1)*$width/$len-20),rand(20,$height),$dark,'./simkai.ttf',$str{$i});
}
//干扰元素  点
for($i = 0;$i < 200;$i++){
	imagesetpixel($img,rand(0,$width),rand(0,$height),$dark);
}
//干扰元素  线
for($i = 0;$i < 10;$i++){
	imageline($img,rand(0,$width),rand(0,$height),rand(0,$width),rand(0,$height),$dark);
}
//图片格式
header('Content-type:image/jpeg');
//输出图片
imagejpeg($img);
//销毁资源
imagedestroy($img);

return $str;

}


